package com.jiage.toolutil.utils;

import android.animation.ValueAnimator;
import android.view.View;

/**
 * 作者：佳哥
 * 日期：2018/8/7
 * 说明：
 */

public class SDAnimatorUtil {

    /**
     * 设置动画
     * @param duration 运行时长
     * @param listener 回调
     * @param value
     */
    public static ValueAnimator valueAnimator(long duration,final onAnimatorUpdateListener listener, int... value){
        return valueAnimator(null,duration, listener, value);
    }

    /**
     * 设置动画
     * @param view
     * @param duration 运行时长
     * @param listener 回调
     * @param value
     */
    public static ValueAnimator valueAnimator(final View view, long duration, final onAnimatorUpdateListener listener, int... value){
        // 设置属性数值的初始值 & 结束值
        ValueAnimator valueAnimator = ValueAnimator.ofInt(value);
        // 设置动画运行时长
        valueAnimator.setDuration(duration);
        // 设置更新监听器：即数值每次变化更新都会调用该方法
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animator) {
                // 获得每次变化后的属性值
                int currentValue = (Integer) animator.getAnimatedValue();
                // 每次值变化时，将值手动赋值给对象的属性
                if(listener!=null){
                    listener.onAnimationUpdate(currentValue);
                    // 刷新视图，即重新绘制，从而实现动画效果
                }
                if(view!=null)
                    view.requestLayout();
            }
        });
        // 启动动画
        valueAnimator.start();
        return valueAnimator;
    }

    public interface onAnimatorUpdateListener{
        void onAnimationUpdate(int currentValue);
    }
}
